iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
Modern Web

關於用 Javascript (Typescript) Stack 打造某種 Backend 3D Rendering 的東東這檔事系列 第 9

Day 09 「是糖,我加了語法糖」- R3F (React-Three-Fiber) 簡介

  • 分享至 

  • xImage
  •  

https://knowyourmeme.com/memes/memes/salt-bae/photos/page/2

它為了解決什麼問題而生?

我在上一篇文章提過得 Three.js 封裝了 WebGL 減輕了不少開發者的負擔,但是為了加入一個物件並渲染出來仍要經過:

1. 有一個場景 (Scene)
2. 有一個攝影機 (Camera)
3. 有一個 Renderer
4. 把一個 Canvas Dom 指配給 Renderer
5. 把 Scene 和 Camera 指配給就能渲染畫面
6. 有一個光源 (Light)
7. 有一個 Geometry
8. 有一個 Material
9. 把 Geometry 和 Material 指派給一個 Mesh
10. 把 Mesh 加入 Scene,這時渲染發生的時候
11. 註冊一個 render 的函數到 requestAnimationFrame

也不算少的步驟,但是如果用 JSX 封裝這些繁瑣的步驟呢?:

<Canvas gl={{ preserveDrawingBuffer: true }}>
  <ambientLight />
  <pointLight position={[10, 10, 10]} />
  <Box position={[-1.2, 0, 0]} />
</Canvas>

哇啦~!R3F 就是 Three.js 的再封裝,讓開發者可以直接用 JSX 描述跟操作 3D 場景。

@react-three/drei

就像 react-use 一樣,有 React 的地方就會有人寫 utils,@react-three/drei 就是 R3F 的補充,它提供了不少物件和 hook 可以直接使用。

小結

現在我們知道了 DOM 可以灑 JSX 語法糖, Three.js 可以灑 JSX 語法糖,但是這個旅程並不僅止於此,容我賣個關子,本系列有機會帶來更多的 JSX 語法糖(?)


上一篇
Day 08 3D 站立在瀏覽器上 (Three.js 簡介)
下一篇
Day 10 無頭瀏覽器異聞錄 (Puppeteer 簡介)
系列文
關於用 Javascript (Typescript) Stack 打造某種 Backend 3D Rendering 的東東這檔事23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
QQBoxy
iT邦研究生 5 級 ‧ 2022-10-19 10:04:14

我本來也是寫 Three.js 的,曾經也看到類似的熱門套件而使用,但也因為依賴的套件沒有繼續維護,導致我全部重寫回 Three.js ,那真的是一場大災難Orz

建議小應用再使用這類套件,如果你是開發一套繪圖軟體等級的應用,千萬不要用這類語法糖(?)套件。

我要留言

立即登入留言